<?php
/**
 * AnswerTextBean.class.php
 * 
 * (C) 2009, tetsuya.odaka(EzoGP).
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/* 
 * アンケートの回答をハンドリングするためのオブジェクト
 * 
 * author；	t.odaka
 * date ;	2005/10/07
 * 
 */

require_once('../Myznala/BaseTextDao.class.php');

class AnswerTextBean extends BaseTextDao {
	/*
	* プロパティー 
	*/
	var $Id, 
		$Q1, 
		$Q2, 
		$Q3, 
		$Q4, 
		$Q5;

	/*
	* コンストラクタ 
	*/ 
	function __construct() {
		parent::__construct();
	}

	/* getter */
	function getId(){return $this->Id;}
	function getQ1(){return $this->Q1;}
	function getQ2(){return $this->Q2;}
	function getQ3(){return $this->Q3;}
	function getQ4(){return $this->Q4;}
	function getQ5(){return $this->Q5;}

	/* setter */
	function setId($_str){$this->Id=$_str;}
	function setQ1($_str){$this->Q1=$_str;}
	function setQ2($_str){$this->Q2=$_str;}
	function setQ3($_str){$this->Q3=$_str;}
	function setQ4($_str){$this->Q4=$_str;}
	function setQ5($_str){$this->Q5=$_str;}

	/*
	* insert ; データを登録する
	* 
	*/
	function insert($_fp){

		/* IDの最大値を計算する */
		$_maxId = $this->findMaxId(&$_fp);
	
		$data=$_maxId + 1;
		$data.= ",";
		$data.=$this->Q1;
		$data.= ",";
		$data.=$this->Q2;
		$data.= ",";
		$data.='"'.preg_replace('/[\n\r]/','',$this->Q3).'"';
		$data.= ",";
		$data.='"'.preg_replace('/[\n\r]/','',$this->Q4).'"';
		$data.= ",";
		$data.='"'.preg_replace('/[\n\r]/','',$this->Q5).'"';
		$data.= "\n";

		fwrite($_fp,$data);
		
		return;
	}

	/*
 	* getAll
 	*   データを全件取得し、Bean Arrayとして返却する。
	*   パラメータ
	*   $_fp	:	this->FileNameのファイルポインタ
 	*  	戻り値	:	AnswerTextBeanオブジェクトが入った配列
 	*/
	function getAll($_fp){
		require("../Myznala/debugLog.php");
		
		$_retArray = array();// 返却値
		while($_rarray = fgetcsv($_fp,1024,',')){
				$retObj = new AnswerTextBean();
				
				$retObj->setId($_rarray[0]);
				$retObj->setQ1($_rarray[1]);
				$retObj->setQ2($_rarray[2]);
				$retObj->setQ3($_rarray[3]);
				$retObj->setQ4($_rarray[4]);
				$retObj->setQ5($_rarray[5]);

				array_push($_retArray, $retObj);
		}
		return $_retArray;
	}
	
	/*
 	* findById
 	*   主キーをもとに、データを取得する。
	*   パラメータ
	*   $_fp	:	this->FileNameのファイルポインタ
 	*  	戻り値	:	見つかったらAnswerTextBeanオブジェクト、なかったらnull.
 	*/
	function findById($_fp, $_id){
		require("../Myznala/debugLog.php");
		
		while($_rarray = fgetcsv($_fp, 1024, ',')){
			//$myDebugLog->debug($_rarray[0].' == '.$_id); // Debugログ
			if($_rarray[0] == $_id){
				$retObj = new AnswerTextBean();
				
				$retObj->setId($_rarray[0]);
				$retObj->setQ1($_rarray[1]);
				$retObj->setQ2($_rarray[2]);
				$retObj->setQ3($_rarray[3]);
				$retObj->setQ4($_rarray[4]);
				$retObj->setQ5($_rarray[5]);

				return $retObj;
			}
		}
		return null;
	}
	
	/*
 	* findMaxId
 	*   主キー（数値）の最大値を求める
	*   パラメータ
	*   $_fp	:	this->FileNameのファイルポインタ
	*  	戻り値	:	主キーの最大値
 	*/
	function findMaxId($_fp){
		require("../Myznala/debugLog.php");

		$_rmax = 0;
		
		/*　Unique Keyの最大値を取得  */
		$_wkarray = array();
		
		while($_rarray = fgetcsv($_fp,1024,',')){
			array_push($_wkarray, intval($_rarray[0]));
//			$myDebugLog->debug($_wkarray); // Debugログ
		}
		
		if(count($_wkarray) > 0) $_rmax = max($_wkarray);
//		$myDebugLog->debug('max($_wkarray): '.max($_wkarray)); // Debugログ
		
		return $_rmax;
	}
	
	/*
 	* summarizeQ1Q2
 	*   Q1,Q2の集計をする。
	*   パラメータ
	*   $_fp	:	this->FileNameのファイルポインタ
	*   $_q		:	'Q1' or 'Q2'
	*  	戻り値	:	集計値をいれた配列
 	*/
	function summarizeQ1Q2($_fp, $_q){
		require("../Myznala/debugLog.php");

		$data_array=array(0,0,0,0);
		if($_q=='Q1'){
			while($_res = fgetcsv($_fp,1024,',')){
				switch($_res[1]){
					case '1':
						$data_array[0]+=1;
						break;
					case '2':
						$data_array[1]+=1;
						break;
					case '3':
						$data_array[2]+=1;
						break;
					default:
						$data_array[3]+=1;
				}
			}
		}elseif($_q=='Q2'){
			while($_res = fgetcsv($_fp,1024,',')){
				switch($_res[2]){
					case '1':
						$data_array[0]+=1;
						break;
					case '2':
						$data_array[1]+=1;
						break;
					default:
						$data_array[2]+=1;
				}
			}
		}
				
		return $data_array;
	}
}
?>
